Next: Creating Symbols, Previous: Symbol Components, Up: Symbols [Contents][Index]
A definition is a special kind of Lisp expression that announces your intention to use a symbol in a particular way. It typically specifies a value or meaning for the symbol for one kind of use, plus documentation for its meaning when used in this way. Thus, when you define a symbol as a variable, you can supply an initial value for the variable, plus documentation for the variable.
defvar and defconst are special
forms that define a symbol as a global variable—a
variable that can be accessed at any point in a Lisp program. See
Variables, for details
about variables. To define a customizable variable, use the
defcustom macro, which also calls
defvar as a subroutine (see Customization).
In principle, you can assign a variable value to any symbol
with setq, whether not it has first been defined as
a variable. However, you ought to write a variable definition for
each global variable that you want to use; otherwise, your Lisp
program may not act correctly if it is evaluated with lexical
scoping enabled (see Variable
Scoping).
defun defines a symbol as a function, creating a
lambda expression and storing it in the function cell of the
symbol. This lambda expression thus becomes the function
definition of the symbol. (The term “function
definition”, meaning the contents of the function cell, is
derived from the idea that defun gives the symbol
its definition as a function.) defsubst and
defalias are two other ways of defining a function.
See Functions.
defmacro defines a symbol as a macro. It creates
a macro object and stores it in the function cell of the symbol.
Note that a given symbol can be a macro or a function, but not
both at once, because both macro and function definitions are
kept in the function cell, and that cell can hold only one Lisp
object at any given time. See Macros.
As previously noted, Emacs Lisp allows the same symbol to be
defined both as a variable (e.g., with defvar) and
as a function or macro (e.g., with defun). Such
definitions do not conflict.
These definition also act as guides for programming tools. For example, the C-h f and C-h v commands create help buffers containing links to the relevant variable, function, or macro definitions. See Name Help in The GNU Emacs Manual.
Next: Creating Symbols, Previous: Symbol Components, Up: Symbols [Contents][Index]